package factory;

import util.CustomException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

/**
 * Classe do Hibernate para controle de transação com o banco de dados.
 *
 * @author Rodolpho
 */
public abstract class HibernateUtil {

    private static SessionFactory sessionFactory;

    /**
     * Retorna a fábrica de sessão.
     *
     * @return SessionFactory
     * @throws CustomException
     */
    public static SessionFactory getSessionFactory() throws CustomException {
        try {
            if (sessionFactory == null) {
                sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
            }
        } catch (Exception e) {
            throw new CustomException("Falha ao obter fábrica de sessões com o banco de dados.", e);
        }

        return sessionFactory;
    }
}